package impl

import (
	"gitee.com/shiwjlinux/vblog01/apps/blog"
	"gitee.com/shiwjlinux/vblog01/conf"
	"gitee.com/shiwjlinux/vblog01/ioc"
	"gorm.io/gorm"
)

var (
	_ blog.Service = (*BlogServiceImpl)(nil)
	_ ioc.Object   = (*BlogServiceImpl)(nil)
)

type BlogServiceImpl struct {
	db *gorm.DB
}

// 初始化函数
func init() {
	// 将BlogServiceImpl注册到ioc.Controller中，参数为blog.AppName和BlogServiceImpl的实例
	ioc.Controller.Registry(blog.AppName, &BlogServiceImpl{})
}

// 初始化BlogServiceImpl结构体
func (i *BlogServiceImpl) Init() error {
	// 从配置文件中获取MySQL数据库连接
	i.db = conf.C().MySQL.GetDB()
	// 返回nil表示初始化成功
	return nil
}

// 获取blog.Service类型的实例
func GetService() blog.Service {
	// 从ioc.Controller中获取blog.AppName对应的实例
	return ioc.Controller.Get(blog.AppName).(blog.Service)
}
